//
//  RSComposeTextView.swift
//  RSWeibo
//
//  Created by Macx on 16/8/18.
//  Copyright © 2016年 Macx. All rights reserved.
//

import UIKit

class RSComposeTextView: UITextView {
    
    
    // 占位用的 label
    private lazy var placeHolderLab: UILabel = {
    
        let lab = UILabel(fontSize: 17, textColor: UIColor.grayColor())
        lab.text = "说点什么吧"
        // 设置大小, 否则不能显示
        lab.sizeToFit()
        
        return lab
        
    }()
    
    
    
    // 设置输入文本框与占位label的控制逻辑
    
    // 当输入框有内容的时候, 占位label就隐藏起来
    override var text: String!{
    
        didSet{
        
            placeHolderLab.hidden = hasText()
        }
    }
        
    

    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
        
        setupUI()
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
   
    
    
    // 设置界面的方法
    private func setupUI(){
        
        // uitextview 继承自 scrollView, 可以滚动, 但是默认是关闭的, 所以需要手动开启
        // 现在开启垂直方向的滚动
        self.alwaysBounceVertical = true
    
        // 添加子控件
        addSubview(placeHolderLab)
        
        // 因为在 RSComposeViewController 中设置了 RSComposeTextView 的代理, 所以就不能再在RSComposeViewController中设置别的代理, 否则其中一个就会失效. 但是, 可以在RSComposeTextView中设置代理监听方法
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textChange", name: UITextViewTextDidBeginEditingNotification, object: nil)
        
        
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //  设置x,y坐标
        placeHolderLab.frame.origin.x = 5
        placeHolderLab.frame.origin.y = 7
        
    }
    
}

extension RSComposeTextView{

    // 代理的监听方法
    @objc private func textChange(){
    
//        print("监听方法")
        // 当输入框中内容有改变的时候, 就把占位label隐藏起来
        placeHolderLab.hidden = true
    }
}























